package com.byq.mm.abstractx.engine;


import com.byq.mm.abstractx.cluster.client.ClientDeviceManager;
import com.byq.mm.abstractx.cluster.server.ServerDeviceManager;
import com.byq.mm.abstractx.cluster.server.executor.ExecutorManager;
import com.byq.mm.abstractx.event.CoreEventCenter;

public class CoreEngine implements CoreEnvironment{
		public void setExtensionManager(ExtensionManager extensionManager) {
		this.extensionManager = extensionManager;
	}
		ClientDeviceManager clientDeviceManager;
		ServerDeviceManager serverDeviceManager;
		CoreStore liteStore;
		CoreEventCenter eventCenter;
		
		ExtensionManager extensionManager;
		
		ExecutorManager executorManager;
		DefinationProcessor definationProcessor;
		InteractionProcessor interactionProcessor;
		DefinationConfig definationConfig;
	public  CoreEngine(CoreStore store,DefinationConfig dc,CoreEventCenter ec){
		liteStore = store;
		clientDeviceManager = new ClientDeviceManager(this);
		serverDeviceManager = new ServerDeviceManager(this);
		eventCenter = ec;
		executorManager = new ExecutorManager();
		definationProcessor = new DefinationProcessor(this);
		interactionProcessor = new InteractionProcessor(this);
		definationConfig = dc;
	}
	public InteractionProcessor getInteractionProcessor() {
		return interactionProcessor;
	}
	public ClientDeviceManager getClientDeviceManager() {
		return clientDeviceManager;
	}
	public ServerDeviceManager getServerDeviceManager() {
		return serverDeviceManager;
	}
	public CoreStore getLiteStore() {
		return liteStore;
	}
	public CoreEventCenter getEventCenter() {
		return eventCenter;
	}
	public ExtensionManager getExtensionManager() {
		return extensionManager;
	}
	public ExecutorManager getExecutorManager() {
		return executorManager;
	}
	public DefinationProcessor getDefinationProcessor() {
		return definationProcessor;
	}
	@Override
	public DefinationConfig getDefinationConfig() {
		// TODO Auto-generated method stub
		return definationConfig;
	}

}
